#ifndef GY_GRAPHICSFILLET_H
#define GY_GRAPHICSFILLET_H

#include "Graphics/BasicGraphics/GY_BasicsGraphicsObject.h"
#include "Graphics/GY_Object.h"
#include "GY_ControlLibrary_global.h"
#include <QGraphicsPixmapItem>
#include <QPointF>
#include <QPainter>
#include <QVector>
#include <QObject>
#include <QtMath>
#include <QRectF>
#include <QDebug>

#define PI 3.14159265359

class GY_CONTROLLIBRARY_EXPORT GY_GraphicsFillet : public GY_BasicsGraphicsObject
{
    Q_OBJECT
public:
    explicit Q_INVOKABLE GY_GraphicsFillet(const QString &guid,QGraphicsItem *parent = nullptr);
    /**
     * @brief GY_GraphicsFillet 圆角矩形类拷贝构造函数
     * @param guid 图形唯一编码
     * @param point1 编辑点1
     * @param point2 编辑点2
     * @param radius1 圆角半径1
     * @param radius2 圆角半径2
     * @param radius3 圆角半径3
     * @param radius4 圆角半径4
     * @param parent 父级Item
     */
    explicit Q_INVOKABLE GY_GraphicsFillet(const QString &guid,
                               const QPointF &point1,const QPointF &point2,
                               qreal radius1,qreal radius2,qreal radius3,qreal radius4,
                               QGraphicsItem *parent = nullptr);
private:
    /**
     * @brief updatePoint 更新点位置
     * @param name
     * @param value
     * @return 返回是否更新
     */
    bool updatePoint(const QString &name,const QVariant &value);
    /**
     * @brief updateRadius 更新圆角半径
     * @param name
     * @param value
     * @return 返回是否更新
     */
    bool updateRadius(const QString &name,const QVariant &value);
    /**
     * @brief updateDarw  更新绘制图形
     */
    void updateDraw();
    /**
     * @brief updatePath 更新图形path
     * @param startPoint 开始点(默认左下角点)
     * @param endPoint 结束点(默认右上角点)
     * @param leftBottomRadius  左下角圆弧半径
     * @param leftTopRadius 左上角圆弧半径
     * @param rightTopRadius 右上角圆弧半径
     * @param rightBottomRadius 右下角圆弧半径
     */
    void updatePath(const QPointF &startPoint, const QPointF &endPoint,const qreal leftBottomRadius,const qreal leftTopRadius,const qreal rightTopRadius,const qreal rightBottomRadius);
    /**
     * @brief initializationPropertyInfo 初始化属性信息
     */
    void initializationPropertyInfo();
signals:

};

#endif // GY_GRAPHICSFILLET_H
